﻿namespace OVS.Common
{
    public delegate TResult Func<TResult>();

    public delegate TResult Func<T1, TResult>(T1 type1);

    public delegate TResult Func<T1, T2, TResult>(T1 type1, T2 type2);

    public delegate TResult Func<T1, T2, T3, TResult>(T1 type1, T2 type2, T3 type3);

    public delegate TResult Func<T1, T2, T3, T4, TResult>(T1 type1, T2 type2, T3 type3, T4 type4);

    public delegate TResult Func<T1, T2, T3, T4, T5, TResult>(T1 type1, T2 type2, T3 type3, T4 type4, T5 type5);

    public delegate void Void<T1>(T1 type1);

    public delegate void Void<T1, T2>(T1 type1, T2 type2);

    public delegate void Void<T1, T2, T3>(T1 type1, T2 type2, T3 type3);

    public delegate void Void<T1, T2, T3, T4>(T1 type1, T2 type2, T3 type3, T4 type4);

    public delegate void Void<T1, T2, T3, T4, T5>(T1 type1, T2 type2, T3 type3, T4 type4, T5 type5);
}